package com.dealin.writer;

import android.util.Log;

import com.dealin.writer.bean.Project;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;

/**
 * Created by 兰件 on 2016/9/25.
 * 这是一个读取数据的工具类
 * 所有数据存取工作都在这里进行
 */

public class DataManager {
    private static ArrayList<Project> projects = new ArrayList<>();
    private static File[] projectFileList;
    private static File[] projectFileList2;

    /**保存版本名称到本地
     * 将参数中的versionName保存在软件设置目录下的veirsionName文件中
     * PS.软件设置目录在类Config中能找到，只需要直接使用
     * @param versionName 新的版本名称
     */
    public static void saveVersionName(String versionName) throws IOException {
        saveFile(new File(Config.SETTING_PATH,"versionName").getAbsolutePath(),versionName);

    }

    /**
     * 从本地将versionName读取出来
     * @return
     */
    public static String getVersionName() throws IOException {
        File file = new File(Config.SETTING_PATH, "versionName");
        if (file.exists()) {
            return readFile(file.getAbsolutePath());
        } else {
            return null;
        }
    }

    /**
     * 实现saveFile和readFile方法，方便数据存取
     * @param path 文件路径;
     * @param content 文件内容;
     */
    public static void saveFile(String path,String content) throws IOException {
        Log.e("保存文件-path", path);
        File file = new File(path);
        if (!file.getParentFile().exists()) {
            file.getParentFile().mkdirs();
        }
        FileOutputStream fileOutputStream = new FileOutputStream(file);
        fileOutputStream.write(content.getBytes());
        fileOutputStream.close();
    }

    /**
     * 读取文件
     * @param path 文件路径
     * @return
     */
    public static String readFile(String path) throws IOException {

        File file = new File(path);
        if (file.exists()) {
            Log.e("读取文件-path", path);
            FileInputStream fileInputStream = new FileInputStream(path);
            byte[] bytes = new byte[fileInputStream.available()];
            fileInputStream.read(bytes);
            return new String(bytes);
        } else {
            return null;
        }
    }

    public static ArrayList<Project> getProjectList() {
        projects.clear();
        //新版本小说获取
        if (projectFileList != null) {
            for(int i=0;i<projectFileList.length;i++) {
                if (projectFileList[i].getName().endsWith(".novx")) {
                    try {
                        projects.add(new Project(projectFileList[i]));
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }

        //老版本小说获取
        if (projectFileList2 != null) {
            for(int i=0;i<projectFileList2.length;i++) {
                if (projectFileList2[i].getName().endsWith(".novx")) {
                    try {
                        projects.add(new Project(projectFileList2[i]));
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        return projects;
    }

    public static void refreshNovelList() {
        projectFileList = new File(Config.NOVEL_PATH).listFiles();
        projectFileList2 = new File(Config.NOVEL_PATH2).listFiles();
    }
}
